package com.bing.java.thread.pool;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * 
 * @author bing
 *
 * 2019年11月9日 上午10:13:12
 * Executor 的中断操作
       调用 Executor 的 shutdown() 方法会等待线程都执行完毕之后再关闭，但是如果调用的是 shutdownNow() 方法，则相当于调用每个线程的 interrupt() 方法。
       以下使用 Lambda 创建线程，相当于创建了一个匿名内部线程。
 */
public class CachedThreadPoolTest {
	public static void main(String[] args) {
		
		ExecutorService executorService = Executors.newCachedThreadPool();
		
		executorService.execute(() -> {
			try {
				Thread.sleep(2000);
				System.out.println("Thread run");
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		});
		
//		executorService.shutdown();   // 不报错，正常直行
		executorService.shutdownNow();   //执行完Main run报中断异常(睡眠过程中被中断)
		System.out.println("Main run");
	}
}
